00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00050 function r_stripslashes(&$array) {
00051 while (list($k, $v) = each($array)) {
00052 if ($k != 'argc' && $k != 'argv' && (strtoupper($k) != $k || ''.intval($k) == "$k")) {
00053 if (is_string($v)) {
00054 $array[$k] = stripslashes($v);
00055 }
00056 if (is_array($v)) {
00057 $array[$k] = r_stripslashes($v);
00058 }
00059 }
00060 }
00061 return $array;
00062 }
00063
00069 function query($query) {
00070 $result = mysql_query($query);
00071 $rows = mysql_affected_rows();
00072 $error = mysql_error();
00073 if ($error) {
00074 print "\n<span style='color: #FF0000;'><strong>MySQL: $error</strong></span><br/>";
00075 print "<pre><strong>query:</strong> $query\n\nAffected Rows: $rows</pre>";
00076 exit;
00077 }
00078 return $result;
00079 }
00080
00089 function message($title, $msg, $opt_back = 1, $opt_index = 1) {
00090 global $settings;
00091 echo "<div class='center'><br/><br/><table>";
00092 output::echoMessage($msg, 2);
00093 echo "</table><br/><br/></div>";
00094 include_once PATH_TO_ROOT."forum/footer.inc.php";
00096 require_once (PATH_TO_ROOT."common/footer.inc.php");
00097 exit;
00098 }
00107 function errormessage($title = '', $msg, $opt_back = 1, $opt_index = 1) {
00108 global $settings;
00109 echo "<div class='center'><br/><br/><table>";
00110 output::errorMessage($msg);
00111 echo "</table><br/><br/></div>";
00112 include_once PATH_TO_ROOT."forum/footer.inc.php";
00114 require_once (PATH_TO_ROOT."common/footer.inc.php");
00115 exit;
00116 }
00122 function forum_query($query) {
00123 $result = mysql_query($query);
00124 if (mysql_errno()) {
00125 echo "Modul Forum (class.functions.inc.php): Fataler Fehler bei SQL Abfrage aufgetreten!";
00126
00127
00128 } else {
00129 return $result;;
00130 }
00131 }
00136 function get_templatesetarray() {
00137 $a_templateset = array();
00138 $dp = opendir('../templates/');
00139 while ($file = readdir($dp)) {
00140 if ($file != '.' && $file != '..' && $file != 'mail' && $file != 'CVS') {
00141 if (is_dir('../templates/'.$file)) {
00142 $a_templateset[] = $file;
00143 }
00144 }
00145 }
00146 return $a_templateset;
00147 }
00154 function yesnoradio($name, $yesno = 0) {
00155 return '<p class="pForm"><input type="radio" name="'.$name.'" value="1"'.($yesno == 1 ? ' checked' : '') .'/></p>
00156 Ja
00157 <p class="pForm"><input type="radio" name="'.$name.'" value="0"'.($yesno == 0 ? ' checked' : '') .'/></p>
00158 Nein
00159 ';
00160 }
00161
00168 function datebox($name, $timestamp) {
00169 $date = getdate($timestamp);
00170 echo "<p class='pForm'><input type=\"text\" name=\"".$name."[mday]\" size=\"2\" maxlength=\"2\" value=\"$date[mday]\"/></p>
00171 .
00172 <p class='pForm'><input type=\"text\" name=\"".$name."[mon]\" size=\"2\" maxlength=\"2\" value=\"$date[mon]\"/></p>
00173 .
00174 <p class='pForm'><input type=\"text\" name=\"".$name."[year]\" size=\"4\" maxlength=\"4\" value=\"$date[year]\"/></p>
00175 ,
00176 <p class='pForm'><input type=\"text\" name=\"".$name."[hours]\" size=\"2\" maxlength=\"2\" value=\"$date[hours]\"/></p>
00177 :
00178 <p class='pForm'><input type=\"text\" name=\"".$name."[minutes]\" size=\"2\" maxlength=\"2\" value=\"$date[minutes]\"/></p>
00179 (dd.mm.yyyy, hh:mm)";
00180 }
00181
00187 function genericformheader($action) {
00188 echo '<form id="form" method="post" action="'.$action.'">
00189 <table width="100%" cellspacing="0" cellpadding="3">
00190 ';
00191 }
00192
00197 function genericformfooter() {
00198 echo ' <tr>
00199 <td> </td>
00200 <td>
00201 <p class="pForm"><input type="submit" name="Abschicken" value="Submit"/></p>
00202 </td>
00203 </tr>
00204 </table>
00205 </form>';
00206 }
00207
00217 function genericformrow($desc, $name, $value = "", $size = "", $maxlength = "")
00218 {
00219 echo '<tr><td>'.$desc.'</td><td>';
00220 editbox($name, $value, $size, $maxlength);
00221 echo '</td></tr>';
00222 }
00223
00230 function hidden($name, $value) {
00231 echo "<p class='pForm'><input type=\"hidden\" name=\"$name\" value=\"$value\"/></p>";
00232 }
00233
00242 function editbox($name, $value = "", $size = "", $maxlength = "") {
00243 $editbox = "<p class='pForm'><input class=\"tbinput\" type=\"text\" name=\"$name\"";
00244 if ($size) {
00245 $editbox.= " size=\"$size\"";
00246 }
00247 if ($maxlength) {
00248 $editbox.= " maxlength=\"$maxlength\"";
00249 }
00250 if ($value) {
00251 $editbox.= " value=\"$value\"";
00252 }
00253 $editbox.= " /></p>";
00254 print $editbox;
00255 }
00256
00267 function listbox($name, $key, $value, $table, $initial_select = -1, $additional = '') {
00268 print "\n\n<!-- listbox created by listbox() -->\n";
00269 print "<p class='pForm'><select class=\"tbinput\" name=\"$name\">\n$additional";
00270 $result = query("SELECT $key, $value FROM $table");
00271 while (list($key, $value) = mysql_fetch_row($result)) {
00272 print " <option value=\"$key\"".($key == $initial_select ? " selected='selected'" : "") .">$value</option>\n";
00273 }
00274 print "</select></p>\n";
00275 print "<!-- -->\n\n";
00276 }
00277
00283 function format_db_date($string_date) {
00284 if ($string_date == '') {
00285 $output = "<strong>Error :</strong> Bad Time String !";
00286 } else {
00287 $output = substr($string_date, 8, 2) .".".substr($string_date, 5, 2) .".".substr($string_date, 0, 4);
00288 }
00289 return $output;
00290 }
00291
00292
00293
00294 function get_ordered_board_list() {
00295 $s = '';
00296 $a_board = array();
00297 $r_board = query("SELECT boardid, boardname, categoryid FROM forum_board WHERE is_photogallery=1 ORDER BY boardorder ASC");
00298 while ($board = mysql_fetch_array($r_board)) {
00299 $a_board[$board['categoryid']][] = $board;
00300 }
00301 $r_category = query("SELECT categoryid, categoryname FROM forum_category ORDER BY categoryorder ASC");
00302 while ($category = mysql_fetch_array($r_category)) {
00303 if ($a_board[$category['categoryid']]) {
00304 $s.= '<option value="0">'.$category['categoryname'].'</option>';
00305 while (list(, $board) = each($a_board[$category['categoryid']])) {
00306 $s.= '<option value="'.$board['boardid'].'"> -- '.$board['boardname'].'</option>';
00307 }
00308 }
00309 }
00310 return $s;
00311 }
00312
00318 function updateboard($boardid) {
00319
00320 $r_thread = query("SELECT threadid, threadtopic, threadtime, threadlastreplyby, COUNT(threadid) AS threadcount, SUM(threadreplies) AS postcount FROM forum_thread WHERE threadlink='0' AND boardid='".intval($boardid) ."' GROUP BY threadid ORDER BY threadtime DESC LIMIT 1");
00321 if (mysql_num_rows($r_thread) < 1) {
00322 query("UPDATE forum_board SET
00323 boardlastpost='0',
00324 boardthreadid='0',
00325 boardthreadtopic='',
00326 boardlastpostby='',
00327 boardposts='0',
00328 boardthreads='0'
00329 WHERE boardid='".intval($boardid) ."' AND is_photogallery=1");
00330 } else {
00331 $thread = mysql_fetch_array($r_thread);
00332 $thread['postcount']+= $thread['threadcount'];
00333 query("UPDATE forum_board SET
00334 boardlastpost='$thread[threadtime]',
00335 boardthreadid='$thread[threadid]',
00336 boardthreadtopic='".addslashes($thread['threadtopic']) ."',
00337 boardlastpostby='".addslashes($thread['threadlastreplyby']) ."',
00338 boardposts='".addslashes($thread['postcount']) ."',
00339 boardthreads='".addslashes($thread['threadcount']) ."'
00340 WHERE boardid='".intval($boardid) ."' AND is_photogallery=1");
00341 }
00342 updateboard($boardid);
00343 }
00344
00345
00355 class BoardForm {
00356 function CreateForm($board, $boardrights, $action, $admin, $method, $destination, $photo_view = true, $photo_upload = true, $photo_edit = true, $photo_remove = false) {
00357 print '<br/><form method="'.$method.'" action="'.$destination.'">
00358 <table width="100%" cellspacing="2" cellpadding="3">
00359 <tr class="tableCell">
00360 <td>Name des Albums:</td>
00361 <td> <p class="pForm"><input size="60" type="text" name="boardname" value="'.(isset($board['boardname']) ? Data::toHTML($board['boardname'], false) : '') .'"/></p> </td>
00362 </tr>
00363 <tr class="tableCell">
00364 <td>Beschreibung:</td>
00365 <td> <p class="pForm"><textarea class="mceEditor" id="mce" rows="10" cols="60" name="description">'.(isset($board['boarddescription']) ? Data::toHTML($board['boarddescription'], false) : '') .'</textarea></p> </td>
00366 </tr>';
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376 print '
00377 <tr class="tableCell">
00378 <td>Status<br/>
00379 Geöffnet / Geschlossen
00380 </td>
00381 <td>
00382 <p class="pForm"><select class="tbinput" name="en"><option value="1" '.(isset($board['boarddisabled']) && $board['boarddisabled'] == 1 ? "selected='selected'" : "") .'>Geschlossen</option><option value="0" '.(!isset($board['boarddisabled']) || $board['boarddisabled'] == 0 ? " selected='selected'" : "") .'>Geöffnet</option></select></p>
00383 </td>
00384 </tr>
00385
00386 <tr class="tableCell">
00387 <td>Bewertung</td>
00388 <td>
00389 <p class="pForm"><select class="tbinput" name="marking"><option value="1" '.(isset($board['marking']) && $board['marking'] == 1 ? "selected='selected'" : "") .'>aktiviert</option><option value="0" '.(!isset($board['marking']) || $board['marking'] == 0 ? " selected='selected'" : "") .'>deaktiviert</option></select></p>
00390 </td>
00391 </tr>';
00392 if ($_SESSION['course']!=0)
00393 {
00394 print '<tr class="tableCell">
00395 <td> Automatisches Abo </td>
00396 <td>
00397 <p class="pForm"><input type="checkbox" name="mustsee" '.(isset($board['mustsee']) && $board['mustsee'] == 1 ? "checked='checked'" : "") .'/></p>
00398 (Obligatorisches Abo für alle Kursmitglieder)
00399 </td>
00400 </tr>';
00401 }
00402 print '<tr class="tableCellDark">
00403 <td colspan="2" align="center"> <p style="width:66.6%;"><strong>Allgemeine Rechte für dieses Album</strong><br/>Dozenten und Tutoren haben alle Rechte. Rechte für bestimmte Studenten können nach der Erstellung des Albums festgelegt werden.</p></td>
00404 </tr>
00405
00406 <tr class="tableCell">
00407 <td> Kann Album einsehen</td>
00408 <td> <p class="pForm"><input type="checkbox" name="photo_view" '.($photo_view == '1' ? "checked='checked'" : "") .'/></p> </td>
00409 </tr>
00410
00411
00412 <tr class="tableCell">
00413 <td> Kann neue Bilder einstellen </td>
00414 <td> <p class="pForm"><input type="checkbox" name="photo_upload" '.($photo_upload == 1 ? "checked='checked'" : "") .'/></p> </td>
00415 </tr>
00416
00417 <tr class="tableCell">
00418 <td> Kann Kommentare abgeben </td>
00419 <td> <p class="pForm"><input type="checkbox" name="II" '.($boardrights[1] == 1 ? "checked='checked'" : "") .'/></p> </td>
00420 </tr>
00421
00422 <tr class="tableCell">
00423 <td> Kann selbst erstellte Bilder löschen </td>
00424 <td> <p class="pForm"><input type="checkbox" name="photo_remove" '.($photo_remove == 1 ? "checked='checked'" : "") .'/></p> </td>
00425 </tr>
00426
00427
00428 <tr class="tableCell">
00429 <td> Kann selbst erstellte Kommentare löschen </td>
00430 <td> <p class="pForm"><input type="checkbox" name="VII" '.($boardrights[6] == 1 ? "checked='checked'" : "") .'/></p> </td>
00431 </tr>
00432
00433 <tr class="tableCell">
00434 <td> Kann selbst erstellte Bilder bearbeiten </td>
00435 <td> <p class="pForm"><input type="checkbox" name="photo_edit" '.($photo_edit == 1 ? "checked='checked'" : "") .'/></p> </td>
00436 </tr>
00437
00438 <tr class="tableCell">
00439 <td> Kann selbst erstellte Kommentare bearbeiten </td>
00440 <td> <p class="pForm"><input type="checkbox" name="VIII" '.($boardrights[7] == 1 ? "checked='checked'" : "") .'/></p> </td>
00441 </tr>
00442
00443
00444
00445 <tr class="tableCellDark">
00446 <td colspan="2" align="center">';
00447 if ($admin != 1) {
00448 print '
00449 <p class="pForm"><input type="hidden" name="course_id" value="'.$_SESSION['course'].'"/></p>';
00450 }
00451 if ($action == "edit") {
00452 print '
00453 <p class="pForm"><input type="hidden" name="update" value="1"/></p>
00454 <p class="pForm"><input type="hidden" name="id" value="'.$board['boardid'].'"/></p>';
00455 }
00456 print '
00457 <p class="pForm"><input type="hidden" name="action" value="'.$action.'"/></p>
00458 <p class="pForm"><input type="submit" name="Send" value="Bestätigen"/></p>
00459 </td>
00460 </tr>
00461 </table>
00462 </form>';
00463 }
00464 }
00465
00474 function addBoardRights($courseID, $boardID, $accessMask, $photo_view, $photo_upload, $photo_edit, $photo_remove) {
00475
00476 global $db, $EZSQL_ERROR, $settings;
00477 if (is_numeric($courseID)) {
00478 $courseID = (int)$courseID;
00479 $moderatorGroupID = $db->get_row("SELECT groupid FROM {$settings['dbPrefix']}forum_group WHERE name='".$courseID."_moderators'");
00480 $studentGroupID = $db->get_row("SELECT groupid FROM {$settings['dbPrefix']}forum_group WHERE name='".$courseID."_students'");
00481 $guestGroupID = $db->get_row("SELECT groupid FROM {$settings['dbPrefix']}forum_group WHERE name='".$courseID."_guests'");
00482
00483
00484
00485 $sql = ("INSERT INTO {$settings['dbPrefix']}forum_groupboard( boardid,accessmask,groupid )
00486 VALUES($boardID,
00487 '$accessMask',
00488 ".$studentGroupID->groupid.")");
00489 $db->query($sql);
00490
00491 $sql = ("INSERT INTO {$settings['dbPrefix']}forum_groupboard( boardid,accessmask,groupid )
00492 VALUES($boardID,
00493 '$accessMask',
00494 ".$guestGroupID->groupid.")");
00495 $db->query($sql);
00496
00497 $sql = ("INSERT INTO {$settings['dbPrefix']}forum_groupboard( boardid,accessmask,groupid )
00498 VALUES($boardID,
00499 '111111111111111111',
00500 ".$moderatorGroupID->groupid.")");
00501 $db->query($sql);
00502
00503 $sql = "INSERT INTO {$settings['dbPrefix']}photogallery_rights( course_id,album_id,usr_id,view,upload,edit,remove) VALUES("."$courseID,$boardID,0".",$photo_view,$photo_upload,$photo_edit,$photo_remove)";
00504 $db->query($sql);
00505 }
00506 return true;
00507 }
00508
00519 function updateBoardRights($boardID, $accessMask, $photo_view, $photo_upload, $photo_edit, $photo_remove) {
00520
00521 global $db, $EZSQL_ERROR, $settings;
00522 if (is_numeric($boardID)) if ($select = $db->get_row("SELECT categoryid FROM {$settings['dbPrefix']}forum_board WHERE boardid=$boardID AND is_photogallery=1 LIMIT 1")) {
00523 $db->query("DELETE FROM {$settings['dbPrefix']}forum_groupboard WHERE boardid=$boardID LIMIT 1");
00524 $db->query("DELETE FROM {$settings['dbPrefix']}photogallery_rights WHERE album_id=$boardID AND usr_id='0' LIMIT 1");
00525 addBoardRights($select->categoryid, $boardID, $accessMask, $photo_view, $photo_upload, $photo_edit, $photo_remove);
00526 }
00527 return true;
00528 }
00529
00530
00531
00537 function compress_page($output) {
00538 global $_SERVER, $config;
00539 if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('gzcompress') && $config['compression']) {
00540 $output.= '<!-- gzcompress()ed -->';
00541
00542 header('Content-Encoding: gzip');
00543 $size = strlen($output);
00544 $crc = crc32($output);
00545 $output = gzcompress($output, 1);
00546 print "\x1f\x8b\x08\x00\x00\x00\x00\x00";
00547 print substr($output, 0, strlen($output) -4);
00548 print pack('V', $crc);
00549 print pack('V', $size);
00550 } else {
00551 print $output;
00552 }
00553 }
00554
00561 function build_link($link, $noamp = false) {
00562 global $g_user, $s;
00563 $add = '';
00564 if ($g_user['userID'] != 0) {
00565 if ($x = strpos($link, "#")) {
00566 $link = substr($link, 0, $x) .$add.substr($link, $x);
00567 } else {
00568 $link.= $add;
00569 }
00570 }
00571 return $link;
00572 }
00573
00579 class Template {
00585 function Template($szTemplateName) {
00586 if (!file_exists($szTemplateName)) {
00587 $this->Halt("unable to load template file: '".$szTemplateName."' does not exist.");
00588 }
00589 $this->szTemplateData = @implode('', (@file($szTemplateName)));
00590 $this->szTemplateData = str_replace('"', '\"', $this->szTemplateData);
00591 $this->szTemplateData = preg_replace("/_\('([^']+)'\)/", '".build_link("$1")."', $this->szTemplateData);
00592 }
00593
00599 function GetTemplate($szVarname = "") {
00600 if ($szVarname) {
00601 return ('$'.$szVarname.' .= "'.$this->szTemplateData.'";');
00602 } else {
00603 return ('compress_page("'.$this->szTemplateData.'");');
00604 }
00605 }
00606 function Halt($szErrorMsg) {
00607 echo "<pre>Template error:\n ".$szErrorMsg."</pre>";
00608 exit;
00609 }
00610 }
00611
00618 function message_redirect($msg, $url) {
00619 global $settings;
00620 $TRedirect = new Template('../templates/redirect.html');
00621 eval($TRedirect->GetTemplate());
00622 include_once "../footer.inc.php";
00624 require_once (PATH_TO_ROOT."common/footer.inc.php");
00625 exit;
00626 }